﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using RESTService.Dominio;
using System.Data.SqlClient;

namespace RESTService.Persistencia
{
    public class ServicioDAO
    {
        public Servicio Crear(Servicio servicioACrear)
        {
            Servicio servicioCreado = null;
            string sql = "INSERT INTO t_servicio VALUES(@cod, @nom, @des)";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", servicioACrear.Codigo));
                    com.Parameters.Add(new SqlParameter("@nom", servicioACrear.Nombre));
                    com.Parameters.Add(new SqlParameter("@des", servicioACrear.Descripcion));
                    com.ExecuteNonQuery();
                }
            }
            servicioCreado = Obtener(servicioACrear.Codigo);
            return servicioCreado;
        }


        public Servicio Obtener(int codigo)
        {
            Servicio servicioEncontrado = null;
            string sql = "SELECT * FROM t_servicio where codigo = @cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", codigo));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            servicioEncontrado = new Servicio()
                            {
                                Codigo = (int)resultado["Codigo"],
                                Nombre = (string)resultado["Nombre"],
                                Descripcion = (string)resultado["Descripcion"],
                            };
                        }
                    }
                }
            }
            return servicioEncontrado;
        }


        public Servicio Modificar(Servicio servicioAModificar)
        {
            Servicio servicioModificado = null;
            string sql = "UPDATE t_servicio SET nombre = @nom, descripcion = @des WHERE codigo = @cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", servicioAModificar.Codigo));
                    com.Parameters.Add(new SqlParameter("@nom", servicioAModificar.Nombre));
                    com.Parameters.Add(new SqlParameter("@des", servicioAModificar.Descripcion));
                    com.ExecuteNonQuery();
                }
            }
            servicioModificado = Obtener(servicioAModificar.Codigo);
            return servicioModificado;
        }


        public void Eliminar(Servicio servicioAEliminar)
        {
            string sql = "DELETE t_servicio WHERE codigo = @cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", servicioAEliminar.Codigo));
                    com.ExecuteNonQuery();
                }
            }
        }



        public List<Servicio> ListarTodos()
        {
            Servicio servicioEncontrado = null;
            List<Servicio> listarservicios = new List<Servicio>();
            string sql = "select * from t_servicio";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        while (resultado.Read())
                        {
                            servicioEncontrado = new Servicio()
                            {
                                Codigo = (int)resultado["Codigo"],
                                Nombre = (string)resultado["Nombre"],
                                Descripcion = (string)resultado["Descripcion"],
                            };
                            listarservicios.Add(servicioEncontrado);
                        }
                    }
                }
            }

            return listarservicios;
        }

    }
}